(新機能)Lambda LayerでAlexa SDK V2を使ってみたら、超便利だった #reinvent
1 はじめに
今回のAWS re:Invent2018で発表となった、Lambda Layerは、モジュールを予め用意しておくことで、関数ごとにパッケージ化する必要がなくなります。
ということで、最近、ちょっと面倒だと感じていたAlexa SDK V2をLayerで使用してみました。
2 ASK-SDK V2
Alexa SDK V1は、テンプレートも用意され、モジュールは予めLambdaで利用可能なため、改めてZIPで送る必要はありませんでした、しかし、V2は、現時点では、まだ自前で送る必要があります。
以下は、Alexa-SDK V2を使用した、簡単なサンプルです。
テンプレートの、Amazon Alexa Start Sessionでテストを回してみると、モジュールが見つからないということでエラーとなります。
3 Layer用のZIP作成
ドキュメントを確認すると、各言語ごと、フォルダ構成が決められているようです。
Including Library Dependencies in a Layer
Node.JS用に、ASK-SDK V2を含むZIPを作成しました。
$ mkdir nodejs $ cd nodejs $ yarn add ask-sdk $ cd .. $ zip -r nodejs.zip nodejs
出来上がったzipファイルは、5.5Mbyte程度でした。
$ ls -al *.zip -rw-r--r-- 1 sin staff 5437182 12 2 02:30 nodejs.zip
10 MB より大きいファイルの場合は、Amazon S3 を使用したアップロードを検討してください。 と書かれていたので、このまま、Lambdaのコンソールからアップロードしました。
公開に成功すると、バージョンが採番されています。
4 使ってみる
Layerを使用するには、Layersで、対象のレイヤーを追加するだけです。
Layerを追加しただけで、先のほどのテストは、問題なく実行(モジュールが認識)できていました。
5 最後に
これで、Alexa-SDKのV2を使用する場合も、モジュールのアップロードは必要なくなりました。
モジュールの梱包が必要無いとなると、恐らく、オンラインエディタだけで充分作業が可能になるでしょう。色々な意味で、超便利です。
6 参考リンク
Including Library Dependencies in a Layer
新機能 – AWS Lambda :あらゆるプログラム言語への対応と一般的なコンポーネントの共有
[検証]LambdaのLayer機能を早速試してみた #reinvent
【速報】【アップデート】Lambdaが複数のファンクションで共有するコードを持てるようになりました(Lambda Layer) #reinvent